#include "gui/VisualComponents/VisualComponentAttribute.h"
#include "gui/VisualComponents/VisualComponentConector.h"

VisualComponentAttribute::VisualComponentAttribute(Diagram& diagram) : VisualCompositeComponent(diagram){
	m_component = new Attribute();
	initialize();
}

VisualComponentAttribute::VisualComponentAttribute(const VisualComponentAttribute& other) : VisualCompositeComponent(other.m_diagram) {
	m_component = new Attribute(*(Attribute*)other.m_component);
	initialize();
}

VisualCompositeComponent* VisualComponentAttribute::getCopy(){
	return new VisualComponentAttribute(*this);
}


InfluenceArea VisualComponentAttribute::getInfluenceArea() {

	return InfluenceRectangle(getX(), getY(), getX() + ATTRIBUTE_INFLUENCE_RECTANGLE_XF, getY() + ATTRIBUTE_INFLUENCE_RECTANGLE_YF);
}

void VisualComponentAttribute::draw(Cairo::RefPtr<Cairo::Context> ptrContext){
	ptrContext->save();

	int x = getX();
	int y = getY();
	Draw draw;
	draw.writeTextInContext(ptrContext, x + ATTRIBUTE_RADIUS, y, m_component->getName(), COLOR_IN_TEXT);

	ptrContext->set_source_rgb(COLOR_IN_TEXT);
	ptrContext->set_line_width(ANCHO_DE_LINEA);
	ptrContext->arc(x + ATTRIBUTE_RADIUS, y + ATTRIBUTE_RADIUS, ATTRIBUTE_RADIUS, 0, 2 * M_PI);
	if (m_selected)
		ptrContext->set_source_rgb(0, 1, 0);
	else
		ptrContext->set_source_rgb(0, 0, 0);
	ptrContext->fill();
	ptrContext->restore();
	VisualCompositeComponent::draw( ptrContext);
}
